package com.link.base.base.message.push.service;

import com.link.base.base.message.push.model.PushInfoInsert;

/**
 * 消息管理 - 推送服务
 * 注意所有需要推送的消息，都应该在该service中封装，不可出现到处都能新建推送数据
 * 
 * @author ouyangzhenqiang
 * @date 2018/10/26
 */
public interface PushService {

    /**
     * 新建推送消息，对象形式
     *
     * @author ouyangzhenqiang
     * @date 2018/10/26
     * @param record
     */
    void messageInsert(PushInfoInsert record) throws Exception;
    
    /**
     * 简单方式创建消息
     * 
     * @author ouyangzhenqiang
     * @date 2019/07/25 22:18
     * @param pushNote 推送消息
     * @param userId 用户Id
     */
    void sampleMessageOnlyUser(String pushNote, Long userId) throws Exception;

    /**
     * 简单方式创建消息
     *
     * @author ouyangzhenqiang
     * @date 2019/07/25 22:18
     * @param pushNote 推送消息
     * @param userId 用户Id
     * @param objectId 对象Id
     * @param module 模块
     */
    void sampleMessageForModule(String pushNote, Long userId,  Long objectId, String module) throws Exception;

    /**
     * 立即推送消息
     * 该方式新建的数据将新建完成之后立即触发推送逻辑
     *
     * @author ouyangzhenqiang
     * @date 2019/07/25 16:08
     * @param pushTitle 消息标题
     * @param pushNote 消息内容
     * @param userId 用户ID
     * @param module 消息模块
     * @param objectId 模块对象ID
     * @param appPushFlag 移动推送标识
     * @param webPushFlag Web推送标识
     */
    void pushInfoRightAway(String pushTitle, String pushNote, Long userId, String module, Long objectId,
                           String appPushFlag, String webPushFlag) throws Exception;
}
